#ifndef FND_NPC_CAR_H
#define FND_NPC_CAR_H

#include "car.h"
#include <string>
#include "AIBehavior.h"

class AutoDriving;
class racing_logic_shell ;

namespace GameLogic
{
    class npc_car : public car
    {
    private:
        LTVector do_position() const ;
        LTRotation do_rotation() const ;
        // this is very important function.
        void do_update_action_logic();

        void do_update_pos_rotation() ;
        void do_update_car_steer(float timeInteval) ;
        void components_activation(void);

        void update_steering(void);
        void update_steering_state_machine(void);
        
        void do_wheel_pos_rot(int ids, LTVector&, LTRotation&) {}

    private:
        ILTBaseClass*  m_obj ;
        std::string m_className;
        racing_logic_shell* m_logic_shell ;
      
        AutoDriving* m_pAutoDriving;

        steering_ai_vehicle_state_type m_State;
        steering_ai_vehicle_parms_type m_Parms;
        steering_ai_vehicle_data_type m_Data;
        HOBJECT do_get_object() ;
    public:
        npc_car(int id, ILTBaseClass* obj, const char* className, racing_logic_shell* shell);
        ~npc_car() ;
        
    } ;
}



#endif
